package scu.maqiang.cte;

import scu.maqiang.fes.BVPType;
import scu.maqiang.fes.FES2T31;
import scu.maqiang.fes.FES2T32;
import scu.maqiang.mesh.Mesh2T3;
import scu.maqiang.mesh.ScalarFunc;
import scu.maqiang.numeric.Direct;
import scu.maqiang.numeric.SRMatrix;

public class CTE_SC1_2DT32 {
	
	public CTE_SC1_2DT32(Mesh2T3 mesh) {
		this.mesh = mesh;
		fs1 = new FES2T31(mesh);
		heatRHS = new double[fs1.GetNdof()];
		temperature  = new double[fs1.GetNdof()];
		heatGradient = new double[2][mesh.getNv()];
		heatFlux = new double[2][mesh.getNv()];
		
		fs2 = new FES2T32(mesh);
		elasticRHS = new double[fs2.GetNdof()];
		disp = new double[fs2.GetNdof()];
		dispUV = new double[2][mesh.getNv()];
		strain = new double[4][mesh.getNv()];
		stress = new double[4][mesh.getNv()];
		eqStress = new double[mesh.getNv()];
	}
	
	public void execute(BVPType[] tp, double[] heatCoef, double[] elasticCoef, double[] timeIntegration, 
			int[] heatLabel, double fixedHeat, 
			int[] NeumannBoundaryLabel, double fluxValue, 
			int[] RobinBoundaryLabel, double robinFluxValue, double convectValue, 
			double[] volumeForce, 
			int[][] fixedDispLabel, Direct[] direct, double[][] fixedDisp, 
            int[] tractionLabel, double[] traction, String reportHeatFile, String reportElasticFile) {
	}
	
	
	public void execute(BVPType[] tp, ScalarFunc[] heatCoef, double[] paramHeatCoef, 
			ScalarFunc[] elasticCoef, double[] paramElasticCoef, 
			double[] timeIntegration, 
			int[] heatLabel, ScalarFunc fixedHeat, double[] paramFixedHeat, 
			int[] NeumannBoundaryLabel, ScalarFunc fluxFunc, double[] paramFluxFunc, 
			int[] RobinBoundaryLabel, ScalarFunc robinFluxFunc, double[] paramRobinFluxFunc, 
			ScalarFunc convectFunc, double[] paramConvectFunc,  
			ScalarFunc[] volumeForce, double[] paramVolumeForce, 
			int[][] fixedDispLabel, Direct[] direct, ScalarFunc[][] fixedDisp, double[][] paramFixedDisp,
            int[] tractionLabel, ScalarFunc[] traction, String reportHeatFile, String reportElasticFile) {
	}
	
	
	Mesh2T3 mesh;
	FES2T31 fs1;
	FES2T32 fs2;
	SRMatrix heatL, heatR;
	double[] heatRHS;
	double[] temperature;
	double[][] heatGradient;
	double[][] heatFlux;

	SRMatrix K;
	double[] elasticRHS;
	double[] disp;
	double[][] dispUV;
	double[][] strain;
	double[][] stress;
	double[] eqStress;
}
